package com.xueyi.aixihu.service;

import com.xueyi.aixihu.entity.po.DtNewsSort;
import com.xueyi.aixihu.entity.vo.AxhFinanceVo;
import com.xueyi.aixihu.entity.vo.BaseSelectVo;
import com.xueyi.aixihu.entity.vo.DataList;
import com.xueyi.aixihu.entity.vo.FindReportFormsSizeVo;
import com.xueyi.aixihu.exception.SzException;
import com.xueyi.aixihu.reqeust.FindReportFormListReq;
import com.xueyi.aixihu.reqeust.PublishReportFormReq;
import com.xueyi.aixihu.reqeust.UploadReportFormsReq;
import com.xueyi.aixihu.reqeust.UploadVoucherReq;

import java.io.IOException;
import java.util.List;

/**
 * @author hxs
 * @createDate 2023/6/28 11:39
 * @description 上传报表相关接口
 */
public interface ReportFormsService {


    /**
     * 删除报表
     */
    void uploadReportForms(UploadReportFormsReq uploadReportFormsReq) throws IOException, SzException;

    /**
     * 查询地区列表
     */
    List<DtNewsSort> findAddressList();

    /**
     * 查询报表列表
     *
     * @param findReportFormListReq 查询参数
     * @return 列表
     */
    DataList<AxhFinanceVo> findReportFormList(FindReportFormListReq findReportFormListReq) throws SzException;

    /**
     * 删除报表
     *
     * @param id 报表id
     */
    void deleteReportForm(Integer id) throws SzException;

    /**
     * 发起审核
     *
     * @param id 报表id
     */
    void initiateAudit(Integer id) throws SzException;

    /**
     * 公开报表
     *
     * @param publishReportFormReq 审核记录id
     */
    void publishReportForm(PublishReportFormReq publishReportFormReq) throws SzException;

    /**
     * 查询财务报表类型列表
     *
     * @param addressType
     * @return 财务报表类型列表
     */
    List<BaseSelectVo> findCwTypeList(Integer addressType) throws SzException;

    /**
     * 获取财务公开各种状态报表的数量
     *
     * @param reportType
     * @return 对象
     */
    FindReportFormsSizeVo findReportFormsSize(Integer reportType) throws SzException;

    /**
     * 操作凭证
     *
     * @param uploadVoucherReq 参数
     * @return 响应成功
     */
    void uploadVoucher(UploadVoucherReq uploadVoucherReq) throws SzException;
}
